﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using DevExpress.XtraEditors;
using RTSoft.SoureCode.Control.LoaiHang;
using DevExpress.XtraEditors.Repository;
using RTSoft.Modules;

namespace RTSoft.SoureCode.Entity
{
    public partial class frmLoaiHang : DevExpress.XtraEditors.XtraForm
    {
        public frmLoaiHang()
        {
            InitializeComponent();
        }
        DataTable tbl;
        String errConnect;
        String errSQL;
        private void frmLoaiHang_Load(object sender, EventArgs e)
        {
            try
            {
                this.InitGrid();
            }
            catch
            {
                Library.ShowMessage("Lỗi dữ liệu đầu vào!");
            }
        }
        //Load dữ liệu lên Xtragird
        #region "InitGrid"

        private void InitGrid() {
            tbl = new DataTable();
            errConnect = "";
            errSQL = "";
            loaihangctrl ctrl = new loaihangctrl();
            ctrl.getData(ref errConnect, ref errSQL, ref tbl);
            //Đổ vào xtraGrid
            GridControl1.DataSource = tbl;            
            GridView1.Columns["ID_LOAI"].Visible = false;
            GridView1.Columns["TEN_LOAI"].Caption = "TÊN LOẠI";
            GridView1.Columns["TRANG_THAI"].Caption = "TRẠNG THÁI";
            GridView1.Columns["TRANG_THAI"].Visible = false;
            GridView1.BestFitColumns();

            // Chỉnh sửa Gridview theo ý mình ví dụ: Checkbox, combobox
            //RepositoryItemComboBox ri = new RepositoryItemComboBox();
            //ri.Items.Add("1");
            //ri.Items.Add("0");
            //GridControl1.RepositoryItems.Add(ri);
            //GridView1.Columns["TRANG_THAI"].ColumnEdit = ri;
        }
        
        #endregion

        #region "Sự kiện các nút"

        private void btnExcel_Click(object sender, EventArgs e)
        {
            frmLoaiHang frm = new frmLoaiHang();
            Library.ExportToExcel(frm, "Danh sách loại hàng", this.GridView1);
        }

        private void btnDelete_Click(object sender, EventArgs e)
        {
            if (GridView1.FocusedRowHandle >= 0) {
                int id = Convert.ToInt32(GridView1.GetRowCellValue(GridView1.FocusedRowHandle, GridView1.Columns["ID_LOAI"].FieldName));
                errConnect = "";
                errSQL = "";
                string strName = GridView1.GetRowCellValue(GridView1.FocusedRowHandle, GridView1.Columns["TEN_LOAI"].FieldName).ToString();
                
                Boolean result = Library.ShowQuestionMessage("Bạn có chắc xóa " + strName + " ?");
                if (result == false) {
                    return;
                }
                loaihangctrl ctrl = new loaihangctrl();              
                ctrl.Delete(ref errConnect,ref errSQL,id);
                if (errSQL != "")
                {
                    Library.ShowMessage("Không thể xóa loại hàng này");
                }
                else
                {
                    GridView1.DeleteSelectedRows();
                    GridView1.RefreshData();
                }
            }
        }

        private void btnClose_Click(object sender, EventArgs e)
        {
            this.Close();
        }       

        // Sự kiện thêm sửa trực tiếp trên Grid
        private void GridView1_ValidateRow(object sender, DevExpress.XtraGrid.Views.Base.ValidateRowEventArgs e)
        {
            loaihangctrl ctrl = new loaihangctrl();
            loaihanginfo info = new loaihanginfo();

            errConnect = "";
            errSQL = "";
            DataRow row = GridView1.GetDataRow(e.RowHandle);
            info.ID_LOAI = Convert.ToInt32(RTValidate.CheckNull(row["ID_LOAI"]));
            info.TEN_LOAI = row["TEN_LOAI"].ToString();
            if (info.ID_LOAI != 0)
            {
                Boolean result = Library.ShowQuestionMessage("Dữ liệu có sự thay đổi bạn có muốn sửa?");
                if (result != false)
                {
                    ctrl.Update(ref errConnect, ref errSQL, info);
                }
            }
            else
            {
                ctrl.Insert(ref errConnect, ref errSQL, info);
            }
            this.InitGrid();   
        }

        #endregion 
    }
}